/*
 * Copyright (c) 2017. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
 * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
 * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
 * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
 * Vestibulum commodo. Ut rhoncus gravida arcu.
 */

package com.xncoding.pos.common.model;


import com.xncoding.pos.common.enums.ResultStatusEnum;

/**
 * 响应结果生成工具
 */
public class ResultGenerator {

    private ResultGenerator() {

    }

    /**
     * 返回操作成功的信息
     *
     * @return
     */
    public static ResultModel genSuccessResult() {
        return new ResultModel(ResultStatusEnum.SUCCESS);
    }

    /**
     * 返回成功之后的数据
     *
     * @param data
     * @return
     */
    public static ResultModel genSuccessResult(Object data) {
        return new ResultModel(ResultStatusEnum.SUCCESS, data);
    }

    /**
     * 返回自定义状态的数据
     *
     * @param code
     * @param message
     * @param data
     * @return
     */
    public static ResultModel genFailCodeResult(int code, String message, Object data) {
        return new ResultModel(code, message, data);
    }

    /**
     * 返回操作失败的提示信息
     *
     * @param message
     * @return
     */
    public static ResultModel genFailResult(String message) {
        return new ResultModel(ResultStatusEnum.FAIL.getStatus(), message);
    }

    /**
     * 返回自定义的code和提示信息
     *
     * @param code
     * @param message
     * @return
     */
    public static ResultModel genCodeResult(int code, String message) {
        return new ResultModel(code, message);
    }

    /**
     * 返回枚举工具类里的提示信息
     *
     * @param resultStatusEnum
     * @return
     */
    public static ResultModel genEnumResult(ResultStatusEnum resultStatusEnum) {
        return new ResultModel(resultStatusEnum);
    }

    /**
     * 返回枚举工具类里的提示信息
     *
     * @param resultStatusEnum
     * @return
     */
    public static ResultModel genEnumResultData(ResultStatusEnum resultStatusEnum, Object data) {
        return new ResultModel(resultStatusEnum, data);
    }

}
